0,敏感性信息
phpinfo,返回头隐藏(nginx版本,php版本)。
1,文件安全
设置linux目录权限,限制上传文件后缀名,最好通过php_fileinfo拓展判断。
新增默认index.html,防止文件目录可列。
文件下载最基本也要加防盗链。
图片防盗链。
2,存储xss攻击
是针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数 。
HttpOnly的设置。如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。
为什么设置HttpOnly能防止前端JavaScript读取Cookie?
- 浏览器在设计时,针对安全考虑,规定了带有
HttpOnly属性的Cookie只能由浏览器在HTTP请求(包括AJAX请求)时自动携带,前端JavaScript代码无法访问这些Cookie。
- 这是一种浏览器级别的安全机制,浏览器根据
HttpOnly标记限制了JavaScript访问权限。
- 因此,即使网页中有恶意JavaScript代码(比如XSS攻击注入的脚本),它也无法通过
document.cookie读取带有HttpOnly的Cookie内容。
3,登录加密
账号密码不可明文传输,https或者前后端des加密解密。
4,跨站csrf
CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种攻击方式,攻击者通过伪造用户的请求,在用户不知情的情况下,以用户的身份对受信任的网站执行未授权的操作。
工作原理:
- 用户登录了受信任的网站(比如银行网站),并且浏览器保存了该网站的登录状态(通常是Cookie)。
- 用户在登录状态下访问了攻击者控制的恶意网站。
- 恶意网站通过隐藏的表单、图片请求、AJAX请求等方式,向受信任网站发送请求。
- 由于浏览器会自动带上受信任网站的Cookie,受信任网站认为这是用户本人发起的合法请求,从而执行了攻击者想要的操作(如转账、修改信息等)。
CSRF预防方法
-
使用CSRF Token(令牌)
- 在用户访问页面时,服务器生成一个唯一的随机Token,嵌入到表单或请求中。
- 服务器在接收到请求时,验证请求中携带的Token是否有效且匹配。
- 攻击者无法获取或伪造有效Token,从而防止CSRF攻击。
-
验证Referer或Origin头
- 服务器检查请求中的Referer或Origin头,确保请求来源于可信域名。
- 这种方法有一定局限性,因为某些浏览器或网络环境可能会屏蔽Referer头。
-
使用SameSite Cookie属性
- 设置Cookie的
SameSite属性为Strict或Lax,防止浏览器在跨站请求时自动携带Cookie。
Strict模式最严格,完全禁止跨站请求携带Cookie。
Lax模式允许部分安全的跨站请求携带Cookie。
-
避免使用GET请求执行有副作用的操作
- 将修改操作(如提交表单、转账等)使用POST请求,并结合CSRF Token进行保护。
-
用户身份验证加强
- 对关键操作要求用户二次验证(如输入密码、短信验证码等)。
5,sql注入
addslashes转义。
「三年博客,如果觉得我的文章对您有用,请帮助本站成长」
共有 0 - PHP的安全